package com.jt.controller;

import com.jt.pojo.Role;
import com.jt.pojo.User;
import com.jt.service.RoleService;
import com.jt.vo.PageResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.jt.service.UserService;
import com.jt.vo.SysResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @author 刘昱江
 * 时间 2021/2/2
 */
@RestController
@CrossOrigin
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;
    @Autowired
    private RoleService roleService;

    @PostMapping("/login")
    //@ApiOperation(value = "完成用户登陆操作", notes = "用户填写用户名和密码之后点击提交完成校验")
    public SysResult login(@RequestBody User user){

        String ticket = userService.login(user);
        if(StringUtils.hasLength(ticket)){
            return SysResult.success(ticket);
        }else{
            return SysResult.fail();
        }
    }

    /**
     * 实现数据分页操作
     * URL地址:http://localhost:8091/user/list?query=&pageNum=1&pageSize=10
     * 参数: pageNum=1&pageSize=10
     * 返回值: SysResult对象
     */
    @GetMapping("/list")
    public SysResult findUserList(PageResult pageResult){
        pageResult = userService.findUserList(pageResult);
        return SysResult.success(pageResult);
    }

    /**
     * 业务说明:实现用户状态更新操作
     * URl地址: http://localhost:8091/user/updateStatus
     * 参数:  json数据信息
     * 返回值: SysResult对象
     */
    @PutMapping("/updateStatus")
    public SysResult updateStatus(@RequestBody User user){

        userService.updateStatus(user);
        return SysResult.success();
    }

    /**
     * 业务说明: 新增用户
     * url地址: http://localhost:8091/user/addUser
     * 参数:  form表单
     * 返回值: SysResult对象
     */
    @RequestMapping("/addUser")
    public SysResult addUser(@RequestBody User user){

        userService.addUser(user);
        return SysResult.success();
    }

    /**
     * 业务说明:  根据用户ID查询用户信息
     * URL地址:   /user/getUserById
     * 参数:      用户ID
     * 返回值:    SysResult对象
     */
    @RequestMapping("/getUserById")
    public SysResult findUserById(Integer id){

        User user = userService.findUserById(id);
        return SysResult.success(user);
    }

    /**
     * 业务说明:    更新用户信息
     * URL地址: /user/updateUser
     * 参数:    邮箱和电话
     * 返回值: SysResult对象
     *
     */
    @PutMapping("/updateUser")
    public SysResult updateUser(@RequestBody User user){

        userService.updateUser(user);
        return SysResult.success();
    }

    /**
     *
     * 业务说明: 删除用户信息
     * URL地址: /user/deleteUserById
     * 参数: id
     * 返回值: SysResult对象
     */
    @DeleteMapping("/deleteUserById")
    public SysResult deleteUserById(Integer id){

        userService.deleteUserById(id);
        return SysResult.success();
    }

    /**
     * 根据用户ID查询角色信息
     * URL地址: user/getRoleList
     * 返回值: 角色列表数据
     */
    @GetMapping("/getRoleList")
    public SysResult getRoleList(Integer id){

        List<Role> roleList = roleService.findRoleList();
        return SysResult.success(roleList);
    }

    /**
     * 保存用户角色信息
     * URL: http://localhost:8091/user/saveUserRole
     * 参数: userId,roleId
     * 返回值: SysResult对象
     */
    @PutMapping("saveUserRole")
    public SysResult saveUserRole(Integer userId,Integer roleId){
        userService.saveUserRole(userId,roleId);
        return SysResult.success();
    }
}
